Semiconductor memory is widely used in various electronic devices such as cellular telephones, digital cameras, personal digital assistants, medical electronics, mobile computing devices, and non-mobile computing devices. Semiconductor memory may comprise non-volatile memory or volatile memory. A non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery). Examples of non-volatile memory include flash memory (e.g., NAND-type and NOR-type flash memory) and Electrically Erasable Programmable Read-Only Memory (EEPROM).
Some non-volatile storage elements have charge storage regions for storing information. One example is a dielectric charge-trapping material that stores a charge which represents a data state. Another example is a conductive floating gate that stores a charge which represents a data state. The amount of charge may impact a threshold voltage of the non-volatile storage element, wherein one or more bits may be stored per non-volatile storage element. For example, each data state can be represented by a unique range in the threshold voltage. In one technique, there is a gap between each threshold voltage range.
In one possible process, a non-volatile storage element is programmed to a target threshold voltage that corresponds to its target data state. During programming, the threshold voltage is tested to verify that it is within the desired range (or at least above a verify target threshold voltage). However, some non-volatile storage elements may have a threshold voltage that is outside of their intended threshold voltage range. This could occur either immediately after programming, or over time the threshold voltage of the non-volatile storage element could drift.
Each of the data states has a read level associated with it. The read level is typically between adjacent threshold voltage ranges. However, due to threshold voltage drift, the ideal read level may need to be changed over time. This is sometimes referred to as determining a dynamic read level.